Many different types of serial buses are used today to provide communications between data processing devices. Two example serial buses include the I2C (I2C) bus, also referred to as the inter-IC bus, developed by Phillips Semiconductor and the Serial Peripheral Interface (SPI) bus developed by Motorola, Inc. The I2C bus is a half-duplex two-wire synchronous data transfer serial bus and is used widely as a control and diagnostic bus. The I2C bus is a multi-master bus and thus can be controlled by more than one connected integrated circuit (IC). A slave device connected to an I2C bus is associated with an I2C slave address, which is unique to the system in which it resides, and monitors I2C transmissions over the I2C bus to determine whether or not it is the intended recipient of a particular communication.
The SPI bus is a full-duplex four-wire, synchronous data transfer serial bus. In slave mode, data transfers are synchronized by a shift clock from an SPI master device and can occur at frequencies up to that of the internal clock of the SPI master. In addition to the four-wire SPI bus, there are also three-wire variations of the SPI bus. According to one three-wire variation, the SPI bus operates as a half-duplex bus, wherein one of the data communication lines is not implemented. Another three-wire variation of the SPI bus omits the use of the chip select wire in applications where one SPI device is always selected as a slave SPI device.
The many choices amongst serial communication buses have resulted in some electronic devices having to support more than one bus in order to service a wider market.